﻿/*=============================================================================
* File Name : Line3.h                             Ver : 1.00  Date : 2009-12-22
*
* Description :
*
*       3次元線分クラス.
*
* Author : yuuki tsuchida.
*============================================================================*/
#ifndef _LINE3_H_
#define _LINE3_H_

#include "../math/Vector3.h"

namespace tglib
{

/**
 * @brief 3次元線分クラス．
 */
class Line3
{
public:
	/*===========================================================================*/
	/**
	 * コンストラクタ．
	 */
	Line3();

	/*===========================================================================*/
	/**
	 * コンストラクタ．
	 *
	 * @param [in]  start 線分の始点．
	 * @param [in]  end   線分の終点．
	 */
	Line3( Vector3& start, Vector3& end );

	/*===========================================================================*/
	/**
	 * コンストラクタ．
	 *
	 * @param [in]  sX 始点のX座標．
	 * @param [in]  sY 始点のY座標．
	 * @param [in]  sZ 始点のZ座標．
	 * @param [in]  eX 終点のX座標．
	 * @param [in]  eY 終点のY座標．
	 * @param [in]  eZ 終点のZ座標．
	 */
	Line3( float sX, float sY, float sZ, float eX, float eY, float eZ );

	/*===========================================================================*/
	/**
	 * デストラクタ．
	 */
	~Line3();

	/*===========================================================================*/
	/**
	 * 初期化．
	 *
	 * @param [in]  start 線分の始点．
	 * @param [in]  end   線分の終点．
	 */
	void initialize( Vector3& start, Vector3& end );

	/*===========================================================================*/
	/**
	 * 初期化．
	 *
	 * @param [in]  sX 始点のX座標．
	 * @param [in]  sY 始点のY座標．
	 * @param [in]  sZ 始点のZ座標．
	 * @param [in]  eX 終点のX座標．
	 * @param [in]  eY 終点のY座標．
	 * @param [in]  eZ 終点のZ座標．
	 */
	void initialize( float sX, float sY, float sZ, float eX, float eY, float eZ );

	/*===========================================================================*/
	/**
	 * 線分のベクトルを取得する．
	 *
	 * @return   線分のベクトル．
	 */
	Vector3 getVector();
	
	/*===========================================================================*/
	/**
	 * 線分の中心点を取得する．
	 *
	 * @return   線分の中心点．
	 */
	Vector3 getCenter();

private:
	/** @brief 線分の始点 */
	Vector3 start_;

	/** @brief 線分の終点 */
	Vector3 end_;
};

} // namespace tglib

#endif

/*========= End of File =====================================================*/
